package core

import (
	"fmt"
	"log"
	"server/config"
	"server/utils"

	"github.com/spf13/viper"
	"gopkg.in/yaml.v3"
)

// InitConf yaml v3 加载yaml配置文件
func InitConf() *config.Config {
	c := &config.Config{}
	yamlData, err := utils.LoadYAML()
	if err != nil {
		log.Fatalf("Failed to load configuration: %v", err)
	}
	err = yaml.Unmarshal(yamlData, c)
	if err != nil {
		log.Fatalf("Failed to unmarshal YAML configuration: %v", err)
	}
	return c
}

// InitConfig viper 解析配置文件
func InitConfig(path string) *config.Config {
	//设置配置文件目录
	viper.SetConfigFile(path)
	//设置配置文件后缀
	viper.SetConfigType("yaml")
	//获取配置值
	if err := viper.ReadInConfig(); err != nil {
		log.Fatalf("读取配置文件错误：%v", err.Error())
	}
	//将配置文件反序列化给结构体
	var conf config.Config
	if err := viper.Unmarshal(&conf); err != nil {
		log.Fatalf("获取配置文件错误：%v", err.Error())
	}
	log.Println(fmt.Sprintf("Load the configuration file: %s", path))
	return &conf
}
